// miniprogram/pages/menu/menu.js
const app = getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo'),

    avatarUrl: './user-unlogin.png',
    userInfo: {},
    openid: '',
    logged: false,
    takeSession: false,
    requestResult: '',
    email:"363400060@qq.com",

    currentTab:1,
    name: "",
    key: "",
    queryResult: null,
    loginResult: "",

    emailApply:'',
    keyAdmin: "",
    queryResultAdmin: null,
    loginResultAdmin: "",

    filedata : '',

    endX:'', 
    endY:'', 
    startX:'', 
    startY:''
  },
  clickTab: function (e) {
    var that = this;
    console.log(this.data.currentTab)
    if (this.data.currentTab === e.target.dataset.current) {
      return false;
    } else {
      that.setData({
        currentTab: e.target.dataset.current,
      })
    }
  },
  copyText: function (e) {
    console.log(e)
    wx.setClipboardData({
      data: e.currentTarget.dataset.text,
      success: function (res) {
        wx.getClipboardData({
          success: function (res) {
            wx.showToast({
              title: '复制成功'
            })
          }
        })
      }
    })
  },

  nameInput: function (e) {
    this.setData({
      name: e.detail.value
    })
  },
  keyInput: function (e) {
    this.setData({
      key: e.detail.value
    })
  },
  //获取用户输入的密码
  loginBtnClick: function (e) {
    const db = wx.cloud.database()

    // 查询学生信息
    db.collection('user_info').where({
      name: this.data.name,
      key: this.data.key
    }).get({
      success: res => {
        this.setData({
          queryResult: JSON.stringify(res.data, null, 2)
        })
        console.log('[数据库] [查询记录] 成功: ', res)
        if (res.data.length > 0) {
          console.log("登录成功！");
          this.setData({
            loginResult: { code: 0, info: "欢迎您，" + res.data[0].name }
          })
          var id = res.data[0]._id;
          var name = res.data[0].name;
          var classStudent = res.data[0].class;
          wx.navigateTo({
            url: '/pages/studentScore/studentScore?name=' + name + '&class=' + classStudent
          })
        } else {
          console.log("用户名不存在或密码错误");
          this.setData({
            loginResult: "用户名不存在或密码错误"
          })
        }
      },
      fail: err => {
        wx.showToast({
          icon: 'none',
          title: '查询记录失败'
        })
        console.error('[数据库] [查询记录] 失败：', err)
      }
    })

  },


  // ************************* 以下为管理员的登录 *************************
  emailInputkeyAdmin: function (e) {
    this.setData({
      emailApply: e.detail.value
    })
  },

  // 申请管理账号
  applyClickAdmin: function(){
    const db = wx.cloud.database()
    var openid = this.data.openid;
    // 查询是否访问过
    db.collection('apply').where({
      openid: openid
    }).get({
      success: flag => {
        if (flag.data.length == 0) {
          db.collection('apply').add({
            data: {
              openid: this.data.openid,
              applyTime: new Date(),
              userInfo: this.data.userInfo,
              email: this.data.emailApply
            },
            success: res => {
              console.log('[数据库] [新增记录] 成功，记录 _id: ', res._id)
            },
            fail: err => {
              console.error('[数据库] [新增记录] 失败：', err)
            }
          }) // 插入结束
          wx.showToast({
            icon: 'none',
            title: '发送申请成功'
          })
        }else{
          wx.showToast({
            icon: 'none',
            title: '申请中，请耐心等待'
          })
        }
      },
      fail: err => {
        console.error('[数据库] [查询记录] 失败：', err)
      }
    }) // 查询结束
  },


  // 授权登录 的逻辑 
  bindGetUserInfo: function (e) {
    console.log(e.detail.userInfo)

    this.setData({
      avatarUrl: e.detail.userInfo.avatarUrl,
      userInfo: e.detail.userInfo
    })

    // 查询openid
    wx.cloud.callFunction({
      name: 'login',
      data: {},
      success: inner => {
        var openid = inner.result.openid;
        console.log(openid);
        this.setData({
          openid: openid
        })

        const db = wx.cloud.database()

        // 查询是否有当前老师
        db.collection('teacher_info').where({
          openid: openid
        }).get({
          success: res => {
            this.setData({
              queryResultAdmin: JSON.stringify(res.data, null, 2)
            })
            console.log('[数据库] [查询记录] 成功: ', res)

            // 如果有，跳转页面
            if (res.data.length > 0) {
              console.log("登录成功！" + res.data[0]);
              this.setData({
                loginResultAdmin: { code: 0, info: "欢迎您，" + res.data[0].name }
              })
              wx.navigateTo({
                url: '/pages/adminMenu/adminMenu?'
              })
            } else {
              console.log("密钥错误");
              this.setData({
                loginResultAdmin: "密钥错误"
              })
            }
          },
          fail: err => {
            wx.showToast({
              icon: 'none',
              title: '查询记录失败'
            })
            console.error('[数据库] [查询记录] 失败：', err)
          }
        })

        // 查询是否访问过
        db.collection('visitor_info').where({
          openid: inner.result.openid
        }).get({
          success: flag => {
            if (flag.data.length == 0) {
              db.collection('visitor_info').add({
                data: {
                  openid: inner.result.openid,
                  nickName: res.userInfo.nickName,
                  gender: res.userInfo.gender,
                  language: res.userInfo.language,
                  city: res.userInfo.city,
                  province: res.userInfo.province,
                  country: res.userInfo.country,
                  avatarUrl: res.userInfo.avatarUrl
                },
                success: res => {
                  console.log('[数据库] [新增记录] 成功，记录 _id: ', res._id)
                },
                fail: err => {
                  console.error('[数据库] [新增记录] 失败：', err)
                }
              }) // 插入结束
            }
          },
          fail: err => {
            console.error('[数据库] [查询记录] 失败：', err)
          }
        }) // 查询结束

      },
      fail: err => {
        console.error('[云函数] [login] 调用失败', err)
      }
    }) // 获取openid结束


  },




  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

    wx.cloud.init({
      env: 'test-oo33m',
      traceUser: true,
    })

    // // 获取用户信息
    // wx.getSetting({
    //   success: res => {
    //     if (res.authSetting['scope.userInfo']) {
    //       // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
    //       wx.getUserInfo({
    //         success: res => {
    //           // 获取到的用户信息
    //           console.log(res.userInfo);
              
    //         }
    //       })
    //     }
    //   }
    // })
  },

  onGetUserInfo: function (e) {
    if (!this.data.logged && e.detail.userInfo) {
      this.setData({
        logged: true,
        avatarUrl: e.detail.userInfo.avatarUrl,
        userInfo: e.detail.userInfo
      });
      console.log(e.detail.userInfo);
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    console.log("onReady");
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log("onReady");
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    console.log("onHide");
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    console.log("onHide");
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    console.log("onPullDownRefresh");
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    console.log("onReachBottom");
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    console.log("onShareAppMessage");
  },

  touchEnd : function(e) {
    this.setData({
      "endX": e.changedTouches[0].clientX,
      "endY": e.changedTouches[0].clientY
    });
    console.log()
    var turn = this.getTouchData(this.data.endX, this.data.endY, this.data.startX, this.data.startY);
  },
  touchStart : function(e) {
    this.setData({
      "startX": e.changedTouches[0].clientX,
      "startY": e.changedTouches[0].clientY
    });
    
  },

  getTouchData: function(endX, endY, startX, startY){
    let turn = "";
    if(endX - startX > 50 && Math.abs(endY - startY) < 50) {      //右滑
      turn = "right";
      if (this.data.currentTab != 0){
        this.setData({
          currentTab: this.data.currentTab - 1,
        })
      }
    } else if (endX - startX < -50 && Math.abs(endY - startY) < 50) {   //左滑
      turn = "left";
      if (this.data.currentTab != 2) {
        this.setData({
          currentTab: this.data.currentTab + 1,
        })
      }
    }
    return turn;
  }


})